package com.asiainfo.indb.view;

import com.asiainfo.indb.model.FileGather;
import com.asiainfo.indb.model.IDataGather;

import java.awt.*;

/**
 * @author zym
 * @date 2019-10-17 10:54
 */
public interface InDbPanel extends IDataGather {

    /**
     * 面板渲染
     */
    void render();

    /**
     * 获取父面板
     *
     * @return 父级面板
     */
    InDbPanel getParentPanel();

    /**
     * 获取面板顶级容器
     *
     * @return 容器
     */
    Container getTopContainer();

    /**
     * 获取面板宽
     *
     * @return 宽
     */
    int getWidth();

    /**
     * 获取面板高
     *
     * @return 高
     */
    int getHeight();

    /**
     * 根据文件数据初始化内容
     */
    void initByFile(FileGather gather);

    /**
     * 缓存面板，将别的面板缓存到此面板内部，方便获取
     *
     * @param inDbPanel 需要缓存的面板
     */
    void cachePanel(InDbPanel inDbPanel);

    /**
     * 获取缓存面板
     *
     * @param panelCls 面板名类
     * @return 面板实例
     */
    <T extends InDbPanel> T getCachedPanel(Class<T> panelCls);
}